<?php
/**
 * CLAROLINE
 *
 * e-portfolio tool for Claroline
 *
 * @author Pierre Raynaud <pierre.raynaud@u-clermont1.fr>
 *
 * @package PORTFOL
 *
 */


$tlabelReq = 'C2IPRAT';
$msgList   = array();
$gidReset  = true;

if ( isset($_REQUEST['cmd']) ) $cmd = $_REQUEST['cmd'];
else                           $cmd = null;

/**
 *  CLAROLINE MAIN SETTINGS
 */

require '../../claroline/inc/claro_init_global.inc.php';
require_once './lib/C2IPRAT.lib.php';
include_once get_path('incRepositorySys').'/lib/user.lib.php';

add_module_lang_array($tlabelReq);

if ( ! get_init('in_course_context') || ! get_init('is_courseAllowed') || !get_init('is_authenticated') ) claro_disp_auth_form(true);
claro_set_display_mode_available(TRUE);


$is_allowedToEdit  = claro_is_allowed_to_edit();

if (!$is_allowedToEdit)
claro_redirect('grille.php');


$nameTools = "Grille pratique C2i";

$QUERY_STRING=''; // used for the breadcrumb 
                  // when one need to add a parameter after the filename

$htmlHeadXtra[] = '<link rel="stylesheet" type="text/css" href="css/pratique.css" />';
$htmlHeadXtra[] ='<script type="text/javascript" src="lib/pratique.js"></script>';


include get_path('incRepositorySys').'/claro_init_header.inc.php';

// Supprimer grille
if ($cmd == 'supprimerGrille')
{
	$grille = new Grille();
	$grille->load($_REQUEST['grille_id']);
	if ($grille->delete())
	$dialogBox .= get_lang('Grid deleted');
}

// Editer une grille
if ($cmd == 'editerGrille')
{
	$grille = new Grille();

	if ($_REQUEST['grille_id'])
	$grille->load($_REQUEST['grille_id']);

	$dialogBox .= "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">"
			."<input type=\"hidden\" name=\"cmd\" value=\"saveGrille\">"
			."<input type=\"hidden\" name=\"grille_id\" value=\"".$grille->getGrilleId()."\">"
			."<label for=\"comment\">".get_lang('Name')."</label>"
			."<br><input type=\"text\" name=\"nom\" value=\"".$grille->getNom()."\">"
			."<br><br><label for=\"comment\">".get_lang('C2i')."</label>"
			."<br><select name=\"C2i\">"
			."<option value=\"N1\"";

	if ($grille->getC2i() == 'N1')
	$dialogBox .= " selected";
	
	$dialogBox .= ">Niveau 1</option>"
			."<option value=\"N2MD\"";

	if ($grille->getC2i() == 'N2MD')
	$dialogBox .= " selected";

	$dialogBox .= ">Niveau 2 - m&eacute;tiers du droit</option>"
			."<option value=\"N2MS\"";

	if ($grille->getC2i() == 'N2MS')
	$dialogBox .= " selected";

	$dialogBox .= ">Niveau 2 - m&eacute;tiers de la sant&eacute;</option>"
			."</select>";

/*
	$dialogBox .= "<br><br><label for=\"comment\">".get_lang('Evaluer les alineas')."</label>"
		     ."<input type=\"checkbox\" name=\"evaluationSousRef\" value=\"1\"";

	if ($grille->getEvaluationSousRef() == 1)
	$dialogBox .= " checked";
*/

	// Gestion des groupes
	$dialogBox .= "<br><br>Utiliser cette &eacute;valuation pour les groupes suivants :<br>";
	$groupes = chercherGroupesAuteur(claro_get_current_user_id());

	$listeGroupesIn = array();
	$listeGroupes = array();

	if ($groupes)
	{
		foreach ($groupes as $groupe)
		{
			if ($groupe['grilleId'] == "0")
			$listeGroupes[$groupe['id']] = $groupe['name'];
			elseif ($groupe['grilleId'] == $_REQUEST['grille_id'])
			$listeGroupesIn[$groupe['id']] = $groupe['name'];
		}
	}


	$dialogBox .= '<table border="0" cellspacing="3" cellpadding="5">' . "\n"
		.	  '<tr valign="top">'
		.    '<th>'
		.    '<label for="inGroup">Groupe a inscrire</label>'
		.    ' : '
		.    '</th>' . "\n"
		.    '<th></th>'. "\n"
		.    '<th>'
		.    '<label for="inGroup">Groupes disponibles</label>'
		.    ' : '
		.    '</th>' . "\n"
		.    '</tr>' . "\n"
		.    '<tr>' . "\n"
		.    '<td>'
		.    claro_html_form_select('ingroup[]',$listeGroupesIn,'',array('id'=>'ingroup', 'size'=>'8', 'multiple'=>'multiple'),true)
		.    '</td>' . "\n"
		.    '<td>' . "\n"
		.    '<input type="button" onClick="move(this.form.elements[\'ingroup\'],this.form.elements[\'nogroup\'])" value="   >>   " />' . "\n"
		.    '<br />' . "\n"
		.    '<input type="button" onClick="move(this.form.elements[\'nogroup\'],this.form.elements[\'ingroup\'])" value="   <<   " / >' . "\n"
		.    '</td>' . "\n"
		.    '<td>' . "\n"
		.    claro_html_form_select('nogroup[]',$listeGroupes,'',array('id'=>'nogroup', 'size'=>'8', 'multiple'=>'multiple'), true) . "\n"
		.    '</td></tr></table>' . "\n";



	$dialogBox .= "<input type=\"hidden\" name=\"evaluationSousRef\" value=\"1\"";

	$dialogBox .= "><br><input type=\"submit\" value=\"".get_lang('OK')."\" onClick=\"selectAll(this.form.elements['ingroup'],true)\"></form>";

}

// Editer une grille
if ($cmd == 'saveGrille')
{
	$grille = new Grille();

	if ($_REQUEST['grille_id'])
	$grille->load($_REQUEST['grille_id']);

	$grille->setNom($_REQUEST['nom']);
	$grille->setC2i($_REQUEST['C2i']);
	$grille->setEvaluationSousRef($_REQUEST['evaluationSousRef']);
	$grille->setAuteur(claro_get_current_user_id());
	
	if ($grille->save())
	{
		$dialogBox .= get_lang('Grid updated');

		effacerGrilleGroupe($grille->getGrilleId());

		// On ajoute les grille aux groupes
		if ($_REQUEST['ingroup'])
		{
			foreach ($_REQUEST['ingroup'] as $groupe)
			{
				ajouterGrilleGroupe($grille->getGrilleId(),$groupe);
			}
		}
	}
}


// Gestion des droits des utilisateurs pour cette grille
if ($cmd == "gestionDroits")
{
	$grille = new Grille();
	$grille->load($_REQUEST['grille_id']);

	$dialogBox .= "<h3>".$grille->getNom()." - ".get_lang('User rights management')."</h3>";

	// Liste des groupes de la grille
	$groupesGrille = chercherGroupesGrille($grille->getGrilleId());

	if ($groupesGrille)
	{
		$dialogBox .= "<br>".get_lang('Display rights for the following group')." :";

		$dialogBox .= "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">"
			."<input type=\"hidden\" name=\"cmd\" value=\"gestionDroits\">"
			."<input type=\"hidden\" name=\"grille_id\" value=\"".$grille->getGrilleId()."\">"
			."<select id=\"groupeId\" name=\"groupeId\"><option value=\"-1\"> --- </option>";

		foreach ($groupesGrille as $groupe)
		{
			if ($groupe['id'] == $_REQUEST['groupeId'])
			$selected = 'selected';
			else
			$selected = '';

			$dialogBox .= "<option value=\"".$groupe['id']."\" ".$selected.">".$groupe['name']."</option>";
		}

		$dialogBox .= "</select><input type=\"submit\"></form>";
	}

	if ($_REQUEST['groupeId'])
	$dialogBox .= afficherGrilleCompetencesDroits($grille->getGrilleId(),$_REQUEST['groupeId']);

	
	// Liste des évaluateurs

	echo '<div id="listeEvaluateurs"><h1>Ajouter un evaluateur<img src="img/delete.gif"></h1><ul>';

	$evaluateursTemp = chercheEtudiantsGroupe($_REQUEST['groupeId'],'0');
	if ($evaluateursTemp)
	{
		foreach ($evaluateursTemp as $eval)
		{
			$infosEval = user_get_properties($eval['user']);
			echo '<li id="eval_'.$eval['user'].'">'.$infosEval['firstname']." ".$infosEval['lastname'].'</li>';
		}
	}

	echo '</ul></div>';
}


// Grilles déjà créées
$grille = new Grille();
$grille->setAuteur(claro_get_current_user_id());
$listeGrille = $grille->chercherListeGrilles();


$titleElement['mainTitle'] = "Grille pratique";

echo claro_html_tool_title($titleElement,false);


// Vérifier l'avancement de l'évaluation
if ($cmd == 'verifEvaluation')
{
	$groupes = chercherGroupesAuteur(claro_get_current_user_id());

	if ($groupes)
	{
		echo "<form action=\"".$_SERVER['PHP_SELF']."\" method=\"post\">"
			."<input type=\"hidden\" name=\"cmd\" value=\"verifEvaluation\">"
			."V&eacute;rifier l'&eacute;valuation du groupe : <select id=\"groupeId\" name=\"groupeId\"><option value=\"-1\"> --- </option>";

		foreach ($groupes as $groupe)
		{
			if ($groupe['id'] == $_REQUEST['groupeId'])
			$selected = 'selected';
			else
			$selected = '';

			echo "<option value=\"".$groupe['id']."\" ".$selected.">".$groupe['name']."</option>";
		}

		echo "</select><input type=\"submit\"></form>";
	}

	if ($_REQUEST['groupeId'])
	{
		$referentiel = chercheReferentiel($_SESSION['_course']['categoryCode'],'pratique');
		$listeEvaluateurs = array();
		foreach ($referentiel as $competence)
		{
			//$evaluateursTmp = afficherEvaluateursCompetence($_REQUEST['groupeId'],$competence['id']);
			$droit = new Droits();
			$droit->setGroupeId($_REQUEST['groupeId']);
			$droit->setCompetenceId($competence['id']);
			$droit->setCourseCode(claro_get_current_course_id());

			$evaluateursTmp = $droit->chercheEvaluateurs();

			if ($evaluateursTmp)
			{
				foreach ($evaluateursTmp as $evaluateur)
				{
					if (!in_array($evaluateur['evaluateurId'],$listeEvaluateurs))
					$listeEvaluateurs[] = $evaluateur['evaluateurId'];
				}
			}
		}
		
		if ($listeEvaluateurs)
		{
			foreach ($listeEvaluateurs as $evaluateur)
			{
				$userInfos = user_get_properties($evaluateur);
				echo "<p><b>".$userInfos['lastname']." ".$userInfos['firstname']." : </b><br>";

				// Nombre d'étudiants évalués
				$etudiantsEvalues = chercherNbreEtudiantsEvalues($_REQUEST['groupeId'],$evaluateur);
				if (is_array($etudiantsEvalues))
				{
					$ratio = @round($etudiantsEvalues[1]/$etudiantsEvalues[0],2);
					echo "<b>".$etudiantsEvalues[0]."</b> &eacute;tudiant(s) &eacute;valu&eacute;(s) sur <b>".$etudiantsEvalues[2]."</b><br><small>".$ratio." comp&eacute;tence(s) par &eacute;tudiant &eacute;valu&eacute;</small>";
				}
				else
				echo $etudiantsEvalues;
			}
		}
		else
		echo "<br><i>Aucun &eacute;valuateur n'a &eacute;t&eacute; d&eacute;fini pour ce groupe</i>";
	}
}
else
{

if (!$listeGrille)
$cmd_menu[] = '<a class="claroCmd" href="admin.php?cmd=editerGrille">'.get_lang('New grid').'</a>';

$cmd_menu[] = '<a class="claroCmd" href="grille.php">'.get_lang('Back to list').'</a>';
    //$cmd_menu[] = '<a class="claroCmd" href="exercise.php?cmd=rqImport">'.get_lang('Import exercise').'</a>';

echo '<p>' . claro_html_menu_horizontal($cmd_menu) . '</p>' . "\n";


if ($dialogBox)
{
	echo claro_html_message_box($dialogBox);
}

echo "<table class=\"claroTable emphaseLine\" width=\"100%\">\n"
		."<tr class=\"headerX\">\n"
			."<th>".get_lang('Grid')."</th>\n";
			
echo "<th>".get_lang('Delete')."</th>\n";
echo "<th>".get_lang('Edit')."</th>\n";
echo "<th>".get_lang('Users')."</th>\n";

	echo "</tr>\n"
		 ."<tbody>";



if ($listeGrille)
{
	foreach ($listeGrille as $thisGrille)
	{
		$grille = new Grille();
		$grille->load($thisGrille['grilleId']);

		echo "<tr><td>".$grille->getNom()."</td>";

		echo "<td>",
				"<a href=\"",$_SERVER['PHP_SELF'],"?cmd=supprimerGrille&grille_id=",$grille->getGrilleId(),"\" ",
				"onClick=\"return confirmation('".clean_str_for_javascript($grille->getNom())."');\">",
				"<img src=\"".$imgRepositoryWeb."delete.gif\" border=\"0\" alt=\"".get_lang('Delete')."\">",
				"</a>",
				"</td>\n";
					
		echo "<td>"
				."<a href=\"".$_SERVER['PHP_SELF']."?cmd=editerGrille&grille_id=".$grille->getGrilleId()."\">"
				."<img src=\"".$imgRepositoryWeb."edit.gif\" border=\"0\" alt=\"".get_lang('Modify')."\">"
				."</a>"
				."</td>\n";

		echo '<td align="center">'
				.	 '<a href="'.$_SERVER['PHP_SELF'].'?cmd=gestionDroits&grille_id='.$grille->getGrilleId().'">'
				.	 '<img src="'.$clarolineRepositoryWeb.'img/group.gif" border="0" alt="'.get_lang('Details').'" />'
				.	 '</a>'
				.	 '</td>' . "\n";

		echo "</tr>";
	}
}
}

?>
